1
リンクリストの構造
AI019Lesson 4
00:00

根本的なレベルでは、 リンクリスト は、自身の存在の有無または構成によって定義される再帰的データ構造です。リストは、 (表記は []))か、あるいは ヘッド に単一の値が含まれ、 テール テールは、それ自体が完全なリストであるものです。

1. 再帰的定義

テールを「自身もリストである」と定義することで、無限にネスト可能な構造を許します。これは [ 1 | [ 2 | [ 3 | [ ] ] ] ]という構造で示されます。各パイプ演算子(|)は、直ちに値と残りの構造を分離します。

12[])ヘッドテール(リストです)

2. 原始的構造と抽象化

Erlang VM(BEAM)における原始的なリストは単純な構造です。例えば List.flatten/1抽象化 ElixirのListモジュールによって提供されています。原始的なデータ構造は自分自身をフラット化する方法を「知りません」。そのロジックは、ネストされたヘッドとテールを走査するためにモジュールが提供しています。

3. 「入れ子人形」のたとえ

リンクリストはロシアの入れ子人形のように考えるとよいでしょう。最も外側の人形が ヘッドです。これを開くと、ちょうど一つの物しかありません:もう一つの人形( テール)です。最終的に最小の人形を開いて何も見つからないときに、 状態に到達します。

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>